<?php

namespace app\admin\controller;

use think\Request;
use app\admin\model\AdminRole as AdminRoleModel;
use think\Db;

class AdminRole extends AdminController
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        // 角色列表
        $res = AdminRoleModel::select();
        // 模板渲染
        return $this->assign('res',$res)->fetch('adminrole/index');
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        return $this->fetch('adminrole/add');
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        // 依赖注入的方式
        $post = $request->post();
        // 实例化Model
        $user = new AdminRoleModel();
        // 传入数据到Model中
        $user->data($post);
        // 过滤非数据表的字段,并写入数据, 返回写入记录数量
        $result = $user->allowField(true)->save();
        // 判断跳转
        if ($result > 0) {
            return $this->success('添加成功了', url('admin/admin_role/index'));
        } else {
            return $this->error('添加失败了');
        }
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //
    }

    // 角色权限设置
    public function roleNode($id)
    {
        $this->assign('id',$id);
        $res = Db::table('dd_admin_node')->select();
        // var_dump($res);
        $access = Db::table('dd_admin_access')->where(['roleId'=> $id])->select();
        $nodeId = array();
        foreach ($access as $key => $value) {
            $nodeId[] = $value['nodeId'];
        }
        $this->assign('nodeId',$nodeId);
        return $this->assign('res',$res)->fetch('adminrole/rolenode');
    }

    //
    public function doRoleNode(Request $request, $roleId)
    {

        $post = $request->post();
        $nodeIdArr = !empty($post['nodeId']) ? $post['nodeId'] : [];
        $access = Db::name('admin_access')->where(['roleId'=>$roleId])->delete();
        if(!empty($nodeIdArr)){
            for ($i=0; $i < count($nodeIdArr); $i++) {
                $result = Db::name('admin_access')->insert(array('roleId'=>$roleId, 'nodeId'=>$nodeIdArr[$i]));
                if(!$result){
                    $this->error('设置权限分配失败！');
                    exit;
                }
            }
        }
        return $this->success('权限设置成功','admin/admin_role/index');
    }
}
